function OSGBGeoNode() {
    OSGBNode.call( this );

    this.model = null;
}

OSGBGeoNode.prototype = Object.assign( Object.create( OSGBNode.prototype ), {

    setModel: function (model) {
        this.model = model;
    },

    getModel: function () {
        return this.model;
    },

    isGeoNode: function () {
        return true;
    },

    isVisible: function (camera) {
        if (this.model != null) {
            if (camera.intersectsBox(this.model.getWorldBoundingBox())) {
                return true;
            }
        }
        return false;
    },

    getWorldBoundingBox: function () {
        if (this.model != null) {
            return this.model.getWorldBoundingBox();
        }
        return new THREE.Box3();
    },

    traverse: function (camera, tileset) {
        if (this.isVisible(camera)) {
            tileset.apply(camera, this.model);
            return true;
        }
        return false;
    },

    accept: function (camera, tileset) {
        tileset.apply(camera, this.model);
    },

} );
